package com.curricula.menu.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import org.apache.log4j.Logger;

import com.curricula.menu.vo.MenuVO;

/**
 * Clase para la el acceso a datos querys: select.
 * 
 * @author Carlos
 * @category Class DAO
 * 
 */
public class MenuDAO {
	static Logger log = Logger.getLogger(MenuDAO.class);
	
	/**
	 * Ejecucion del query con la sentencia SELECT invocada por el servicio MenuService,
	 * se invoca con un VO que servira de filtro para obtener una lista con todos los elementos
	 * que cumplan la clausula del VO filtro.
	 * 
	 * @author Carlos
	 * @param Object filter
	 * @param Connection conn
	 * @return boolean
	 * @throws SQLException 
	 */
	public static List<MenuVO> find(Object filter, Connection conn) throws SQLException {
		MenuVO filtro = (MenuVO) filter;
		List<MenuVO> listaMenu = new ArrayList<MenuVO>();
		String sql="SELECT * FROM menu WHERE 1=1";
		
		if(filtro.getMenTipo() != null && filtro.getMenTipo().trim().length()>0)
			sql+=" AND men_tipo='" + filtro.getMenTipo() + "'";
		if(filtro.getMenSeccion() != null && filtro.getMenSeccion().trim().length()>0)
			sql+=" AND men_seccion='" + filtro.getMenSeccion() + "'";
		
		PreparedStatement ps = null;
		log.info("Consulta Find: "+ sql);

		try {
			ps = conn.prepareStatement(sql);			
			ResultSet rs = ps.executeQuery();
			
			if(rs.next()){
				do{
					MenuVO menu = new MenuVO();
					menu.setMenMenu(rs.getString("men_menu"));
					menu.setMenRuta(rs.getString("men_ruta"));
					menu.setMenTipo(rs.getString("men_tipo"));
					menu.setMenSeccion(rs.getString("men_seccion"));
			    	listaMenu.add(menu);
				}while(rs.next());
			}else
				listaMenu = null;
			
		} catch (SQLException e) {
			log.error("Error SQL: "+ e);
			throw e;
		}
		
		return listaMenu;
	}
}
